{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "# Pytorch音频处理\n",
    "原文：https://pytorch.org/tutorials/beginner/audio_preprocessing_tutorial.html  \n",
    "Pytorch Audio Processing使用[torchaudio](https://github.com/pytorch/audio)这个库。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import torchaudio"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "# 打开一个音频文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of waveform: torch.Size([2, 672096])\n",
      "Sample rate of waveform: 16000\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 音频文件的双声道很接近，所以图上波形边缘有不太明显的两个颜色。\n",
    "filename = 'data/diarizationExample_sr16k_ac2.wav'\n",
    "waveform, sample_rate = torchaudio.load(filename)\n",
    "\n",
    "print(\"Shape of waveform: {}\".format(waveform.size()))\n",
    "print(\"Sample rate of waveform: {}\".format(sample_rate))\n",
    "\n",
    "plt.figure()\n",
    "plt.plot(waveform.t().numpy())\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "# 转换(Transformations)\n",
    "torchaudio支持的转换列表还在增长中，[这里查看](https://pytorch.org/audio/transforms.html)。\n",
    "- 重采样(Resample): Resample waveform to a different sample rate.\n",
    "- 频谱图(Spectrogram): Create a spectrogram from a waveform.\n",
    "- 梅尔刻度(MelScale): This turns a normal STFT into a Mel-frequency STFT, using a conversion matrix.\n",
    "- 振幅转分贝(AmplitudeToDB): This turns a spectrogram from the power/amplitude scale to the decibel scale.\n",
    "- 梅尔频率倒谱系数(MFCC): Create the Mel-frequency cepstrum coefficients from a waveform.\n",
    "- 梅尔频谱图(MelSpectrogram): Create MEL Spectrograms from a waveform using the STFT function in PyTorch.\n",
    "- μ-law编码(MuLawEncoding): Encode waveform based on mu-law companding. 原理与为何增加SNR参考这篇：https://www.mahong.me/archives/13\n",
    "- μ-law解码(MuLawDecoding): Decode mu-law encoded waveform.\n",
    "\n",
    "首先，在对数刻度上查看频谱图的对数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of spectrogram: torch.Size([2, 201, 3361])\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "specgram = torchaudio.transforms.Spectrogram()(waveform)\n",
    "\n",
    "# 双声道的音频\n",
    "print(\"Shape of spectrogram: {}\".format(specgram.size()))\n",
    "\n",
    "plt.figure()\n",
    "plt.imshow(specgram.log2()[0,:,:].numpy())\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "或者，可以以对数刻度查看梅尔频谱图。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of spectrogram: torch.Size([2, 128, 3361])\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "specgram = torchaudio.transforms.MelSpectrogram()(waveform)\n",
    "print(\"Shape of spectrogram: {}\".format(specgram.size()))\n",
    "\n",
    "plt.figure()\n",
    "# MelSpectrogram的接口返回的跟其它几个不一样，还得detach()生成一个不需要求导的张量。\n",
    "# tensor.detach() creates a tensor that shares storage with tensor that does not require grad.\n",
    "# Ref: https://discuss.pytorch.org/t/clone-and-detach-in-v0-4-0/16861/2\n",
    "plt.imshow(specgram.detach()[0, :, :].numpy())\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "可以对音频进行频率重采样，一次操作一个声道。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of transformed waveform: torch.Size([1, 67210])\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "new_sample_rate = sample_rate/10\n",
    "# 这里对第一个声道进行重采样\n",
    "channel = 0\n",
    "# view(1, -1)是将waveform[channel,:]这个一维数组重新组装为二维数组。\n",
    "transformed = torchaudio.transforms.Resample(sample_rate, new_sample_rate)(waveform[channel,:].view(1, -1))\n",
    "print(\"Shape of transformed waveform: {}\".format(transformed.size()))\n",
    "\n",
    "plt.figure()\n",
    "plt.plot(transformed[0, :].numpy())\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%% md\n"
    }
   },
   "source": [
    "μ-law编码。μ-law编码要求信号的数值在-1与1之间，因为上面生成的waveform张量是常规的Pytorch张量，因此这里可以对其进行直接操作。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Min: -0.5394287109375\n",
      "Max: 0.664764404296875\n",
      "Mean: 0.04157630726695061\n"
     ]
    }
   ],
   "source": [
    "# 检查信号数值是否在区间[-1,1]中\n",
    "print(\"Min: {}\\nMax: {}\\nMean: {}\".format(waveform.min(), waveform.max(), waveform.mean()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "如上所示，信号已经在区间[-1, 1]，因此不需要再正则化。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "def normalize(tensor):\n",
    "    # 减去平均值，并缩放到区间[-1,1]\n",
    "    tensor_minusmean = tensor - tensor.mean()\n",
    "    return tensor_minusmean/tensor_minusmean.abs().max()\n",
    "# 归一化为[-1,1]\n",
    "# waveform = normalize(waveform)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "对waveform进行μ-law编码。\n",
    "一般来说语音信号是符合拉普拉斯分布的，当我们使用线性量化的时候则会造成一些不必要的量化等级的浪费。\n",
    "因此，可以将信号先进行放大，使其的pdf（概率密度函数）分布发生改变，变得更加的均匀，然后再进行量化反转，从而得到最终的信号。(参考https://www.mahong.me/archives/13)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of transformed waveform: torch.Size([2, 672096])\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "transformed = torchaudio.transforms.MuLawEncoding()(waveform)\n",
    "print(\"Shape of transformed waveform: {}\".format(transformed.size()))\n",
    "\n",
    "plt.figure()\n",
    "plt.plot(transformed[0, :].numpy())\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%% md\n"
    }
   },
   "source": [
    "μ-law解码。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of recovered waveform: torch.Size([2, 672096])\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "reconstructed = torchaudio.transforms.MuLawDecoding()(transformed)\n",
    "print(\"Shape of recovered waveform: {}\".format(reconstructed.size()))\n",
    "\n",
    "plt.figure()\n",
    "plt.plot(reconstructed[0, :].numpy())\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%% md\n"
    }
   },
   "source": [
    "最后，对比原始waveform与经过μ-law编解码重建后的waveform。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Median relative difference between original and Mulaw rconstructed signals :1.22%\n"
     ]
    }
   ],
   "source": [
    "# 计算中位数相对差\n",
    "err = ((waveform-reconstructed).abs()/waveform.abs()).median()\n",
    "print(\"Median relative difference between original and Mulaw rconstructed signals :{:.2%}\".format(err))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 从Kaldi迁移至torchaudio\n",
    "Kaldi是活跃的语音识别工作集，torchaudio通过`torchaudio.kaldi_io`提供与其的兼容性。\n",
    "实际上它可以通过以下方式从Kaldi scp、ark文件或流中读取内容：\n",
    "- read_vec_int_ark\n",
    "- read_vec_flt_scp\n",
    "- read_vec_flt_arkfile/stream\n",
    "- read_mat_scp\n",
    "- read_mat_ark\n",
    "\n",
    "torchaudio为频谱图(spectrogram)与过滤器组(fbank)提供与Kaldi兼容的转换(transform)，[参见此处](https://pytorch.org/tutorials/beginner/compliance.kaldi.html)获取更多信息。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of spectrogram: torch.Size([3359, 201])\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_fft = 400.0\n",
    "frame_length = n_fft / sample_rate * 1000.0\n",
    "frame_shift = frame_length / 2.0\n",
    "\n",
    "params = {\n",
    "    \"channel\": 0,\n",
    "    \"dither\": 0.0,\n",
    "    \"window_type\": \"hanning\",\n",
    "    \"frame_length\": frame_length,\n",
    "    \"frame_shift\": frame_shift,\n",
    "    \"remove_dc_offset\": False,\n",
    "    \"round_to_power_of_two\": False,\n",
    "    \"sample_frequency\": sample_rate,\n",
    "}\n",
    "\n",
    "specgram = torchaudio.compliance.kaldi.spectrogram(waveform, **params)\n",
    "\n",
    "print(\"Shape of spectrogram: {}\".format(specgram.size()))\n",
    "\n",
    "plt.figure()\n",
    "plt.imshow(specgram.t().numpy())\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "torchaudio还支持根据波形(waveform)计算滤波器组(filterbank)的功能，以匹配Kaldi的实现。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of fbank: torch.Size([3359, 23])\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fbank = torchaudio.compliance.kaldi.fbank(waveform, **params)\n",
    "print(\"Shape of fbank: {}\".format(fbank.size()))\n",
    "\n",
    "plt.figure()\n",
    "plt.imshow(fbank.t().numpy())\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 小结\n",
    "本文以原始音频信号(raw audio signal)或波形(waveform)为例，来说明如何使用torchaudio打开音频文件，以及如何预处理和转换（transform）此类波形。鉴于torchaudio是基于Pytorch构建的，这些技术可在利用GPU的同时作为更高级音频应用（例如语音识别）的构建块。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "pycharm": {
   "stem_cell": {
    "cell_type": "raw",
    "metadata": {
     "collapsed": false
    },
    "source": []
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
